Закрыть окно
Список других текстов темы "Юмор"
Эмулятор БЕЙСИКа ДВК
PROGRAM BASIC
BYTE L(80),LL
REAL R(20)
EQUIVALENCE (R(1),L(1))
DATA PR/4HPRIN/,RLIST/4HLIST/,BYE/4HBYE /,EOT/4HEND /
TYPE *,' БЕЙСИК ДВК НЦ'
TYPE 20
20 FORMAT ('$НУЖНЫ ЛИ ВАМ РАСШИРЕННЫЕ ФУНКЦИИ? (Y/N)')
ACCEPT 3,LL
3 FORMAT (A1)
IF (LL.NE.'Y') GOTO 15
TYPE *,' ПОГОДИ, СЕЙЧАС РАСШИРЮ '
DO 16 I=1,8
DO 17 J=1,32767
17 CONTINUE
TYPE 18
18 FORMAT ('$ РАСШИРЯЮ...')
16 CONTINUE
TYPE *,' РАСШИРИЛА !'
GOTO 2
C
15 TYPE 21
21 FORMAT ('$А КЛАВИАТУРА? (Y/N)')
ACCEPT 3,LL
IF (LL.EQ.'Y') GOTO 2
TYPE *,'НУ И НЕ НАДО !'
CALL BRY
C
2 TYPE *,' ЖДУ'
IFLAG=0
CALL SCCA(IFLAG)
READ (5,1,END=5) N,(L(I),I=1,80)
1 FORMAT (Q,80A1)
IF (N.EQ.0) GOTO 2
IF (IFLAG.EQ.0) GOTO 14
TYPE *,' Я ТЕБЕ НАЖМУ ^C ^C !!!'
GOTO 2
C
14 IF (R(1).NE.PR) GOTO 6
TYPE 10,(L(I),I=7,67)
10 FORMAT (60A1)
GOTO 2
C
6 IF (L(1).LT.'1'.OR.L(1).GT.'9') GOTO 4
TYPE *,' НУ, ЕЩЕ РАЗИК ...'
GOTO 2
C
4 IF (R(1).NE.BYE) GOTO 11
TYPE *,' НАПРАСНО ТЫ МЕНЯ ПОКИДАЕШЬ,'
TYPE *,' МНЕ С ТОБОЙ БЫЛО ХОРОШО.'
TYPE *,' ПОИГРАЕМ В ПАРОВОЗИК...'
TYPE *,' НАЖМИ КНОПОЧКУ...'
CALL BRY
C
11 IF (R(1).NE.EOT) GOTO 12
TYPE *,' А СЛОВО ЗНАЕШЬ ?'
READ (5,101,END=102) PAR
101 FORMAT (A4)
IF (PAR.NE.4HPASS) GOTO 102
TYPE *,' ПРИВЕТ! ДО НОВЫХ ВСТРЕЧ!'
CALL EXIT
102 TYPE *,' НЕ ЗНАЕШЬ...'
TYPE 103
103 FORMAT (///'?KMON-F-SYSTEM HANDE HOCH !!!')
TYPE *,' ВОТ ТАК!'
CALL BRY
C
12 IF (R(1).NE.RLIST) GOTO 13
DO 23 I=1,20
DO 25 J=1,50
L(J)=32+32*RAN(I,J)
25 CONTINUE
TYPE 26,I,(L(J),J=1,50)
IFLAG=0
CALL SCCA(IFLAG)
IF (IFLAG.NE.0) TYPE *,' НЕТ, ТЫ ДОСМОТРИ!'
23 CONTINUE
26 FORMAT (1X,I3,1X,50A1)
GOTO 2
C
13 TYPE *,' ОШИБК 1 СТРОКЕ 0'
GOTO 2
C
5 TYPE *,' У-У-У-У-У !!! НАПУГАЛ !!!'
GOTO 2
END
.GLOBL BRY
START:
BRY: MOV -(PC),-(PC)
.END START
Примечание составителя.
Эта программа была реализована на СМ-4 в операционной системе РАФОС (RT-11) в 239 физико-математической школе г.Ленинграда. Всякий, кто хоть раз садился за ДВК и пытался работать на местном БЕЙСИКе, поймет намеки, которыми изобилует сей программный продукт.
Для тех, кто не совсем хорошо знаком с нестандартными возможностями ФОРТРАНа РАФОС, привожу краткие комментарии:
1. Выполнение почти каждой программы в РАФОСе можно прервать, нажав CTRL/C. Стандартная подпрограмма SCCA позволяет программе различать CTRL/C, устанавливая FLAG в 1 при двойном нажатии этой комбинации клавиш.
2. Что делает ассемблерная подпрограмма BRY? Это так называемый "чертик" (хотя есть и другие варианты названия). Он состоит из одной команды, которая пересылает сама себя в предыдущее слово памяти и передает туда управление. Понятно, что из нее нет выхода. Результатом работы "чертика" является затирание всей памяти его кодом. При этом терминал, так как стирается его драйвер, зависает и при нажатии любой клавиши лишь гудит, что и обыгрывается в программе.
Вот, вроде, и все.
Счастливой работы в эмуляторе
БЕЙСИК ДВК !!!